﻿#pragma once

#include <QMainWindow>
#include "ui_MainView.h"
//#include "OrderFormData.h"
#include <deque>
#include <QDateTime>
#include "qcustomplot.h"

class MainView : public QMainWindow
{
	Q_OBJECT

public:
	MainView(QWidget *parent = Q_NULLPTR);
	~MainView();

private slots:
	void onSetWorkspace();
	void showOperateMessage(const QString &pMsg);
	// 合成基础K线
	void generateKItem();
	void slotTest();
	// 回测时间修改后合约列表等信息也要修改
	void onChangeBackTestTime(const QDateTime &datetime);
	// 全选的回应
	void onCheckStateChanged(int state);
	// 启动回测
	void onStartBackTest();
	// 策略配置
	void onStrategyOption();
	// 合约列表右键菜单
	void symbolListRightMenu(const QPoint &pos);
	// 显示K线信息
	void showKInfo(const QPoint &kPt);

	// 配置菜单
	void onSetMDOpt();
	void onSetTradeOpt();
	// 假期配置
	void onSetHolidayOpt();
private:
	// 初始化合约列表的显示信息
	void initSymbolListInfo();
	// 根据当前的设置返回回测时间，就是一个行情时间段，1上午或1下午等
	void getCurBackTestTime(time_t &outBackTestRangeBeginStamp, time_t &outBackTestRangeEndStamp);
	// 绘制量化回测趋势
	void drawQuanitativeAndBackTest(const std::string &pSymbol, time_t backBegin, time_t backEnd);
	// 获取上次的回测时间
	QDateTime getLastBackTime();
	// 设置这次的回测时间
	void saveBackTime(const QDateTime &pTime);
	// 获取行情段的时间区间
	QDateTime getMarketTimeMiddle();
	// 初始化蜡烛图视图
	void initCandles();

	Ui::MainView ui;
	QCPFinancial *m_candlesticks;
	//QCPFinancial *m_candlesticks;
};
